Contact centers are employed by many enterprises to service customer contacts. A typical contact center includes a switch and/or server to receive and route incoming packet-switched and/or circuit-switched contacts and one or more resources, such as human agents and automated resources (e.g., Interactive Voice Response (IVR) units), to service the incoming contacts. Contact centers distribute contacts, whether inbound or outbound, for servicing to any suitable resource according to predefined criteria. In many existing systems, the criteria for servicing the contact from the moment that the contact center becomes aware of the contact until the contact is connected to an agent are customer-specifiable (i.e., programmable by the operator of the contact center), via a capability called vectoring. Normally in present-day Automated Contact Distributors (ACDs) when the ACD system's controller detects that an agent has become available to handle a contact, the controller identifies all predefined contact-handling queues for the agent (usually in some order of priority) and delivers to the available agent the highest-priority oldest contact that matches the agent's highest-priority queue.
Contact routing algorithms employed by ACDs (and most algorithms in general) are designed for a single purpose. It is generally difficult to utilize a particular algorithm for one problem when it has been developed to address another problem. One common analogy is trying to fit a square peg into a round hole. When that purpose changes it is usually necessary to develop a new algorithm or some variant of the previous algorithm to be used for the new purpose. The problem with this approach is that the algorithm development and deployment time is somewhat long and customers will often have to wait for a customized solution to their particular problem, unless they don't mind trying to fit an existing algorithm (a square peg) into their problem (the round hole).
An example of a limited algorithm is Avaya's Business Advocate and fairness algorithms, both of which can be employed in a contact center context. Advocate does an excellent job of matching agents to work and maximizing things like profit, but in overload, Advocate uses the “best” agents the most and is not “fair”. Fairness algorithms like occupancy and pacing consider agents but don't optimize goals like “most profit”. These two algorithms are driven by different goals.